Expresiones calculadas ADONIX 

Presentación

En ciertas pantallas de parametrización, se pueden introducir fórmulas de cálculo conocidas como expresiones adonix (el motor de ejecución de los sistemas en tecnología X3 se llama adonix) A continuación se encuentra una descripción general de las funciones que se utilizan en las expresiones adonix.

Existen numerosas ayudas durante el proceso de introducción de la formula, tanto para conocer las funciones y las variables utilizables, como para aclarar el significado de la formula. Estas ayudas son accesibles gracias al editor de fórmulas.

Posibilidad de ejecutar una expresión (en la que solamente figuran constantes y variables accesibles en el contexto) gracias a la minicalculadora. calculadora.

Tipo de una expresión ADONIX

Una expresión ADONIX es de tipo alfanumérico, numérico o está en forma de fecha. Según el lugar donde se realice la parametrización, se puede necesitar cualquiera de estos tipos (incluso si todos los tipos se pueden utilizar en una formula, las funciones de un tipo concreto, pueden recurrir a los componentes de otro tipo de expresión). Señalar que la función tipo permite controlar el tipo de variable.

Cómo construir una expresión ADONIX

Una expresión se compone de constantes, variables, operadores y funciones.

Constantes

Pueden ser:

*    de tipo alfanumérico: se expresan ya sea entre apóstrofes (') o entre comillas (") He aquí dos ejemplos de series válidas:

 

"Es cierto"

 

'una "serie" particular'

*    de tipo numérico: expresadas con un decimal si es necesario. He aquí dos ejemplos de series válidas:

 

-2.5

 

123000

*    de tipo fecha: expresadas en forma día/mes/año. Es importante tener en cuenta que el año se tiene que expresar obligatoriamente en 4 cifras. He aquí dos ejemplos de series válidas:

 

[15/3/2002]

 

[21/05/1819]

* de tipo lógico: se confunde con las constantes numéricas : 1 ( y por extensión todo valor no nulo) equivalente a Verdadero, 0 equivale a Falso.

Operadores

Los operadores válidos son los siguientes:

 

+

adición de dos números, una fecha y un número de días, o concatenación de dos cadenas de caracteres.

 

-

sustracción de dos números, una fecha y un número de días, o concatenación de dos cadenas de caracteres insertando un espacio en tres las dos cadenas.

 

*

multiplicación de dos números.

 

/

división de dos números.

 

^

elevado a una potencia.

 

<

<=

>

>=

<>

operadores de comparación

 

 

and

or

xor

not

operadores lógicos. Pueden expresarse de forma abreviada

&

|

?

!

Por otro lado, existe la posibilidad de utilizar los paréntesis con nivel de entrelazado ilimitado.

Variables

Una variable se expresa generalmente de la siguiente manera:

 

[ clase ] nomvar ( índice )

Se pueden definir las siguientes variables:

 

[F:BPC]BPCNAME

 

MA_VARIABLE

 

ELEMENT(33)

El nombre de la variable nomvar se expresa en forma de letra y/o de cifras. El primer caracter es siempre una letra. También admite el subrayado. La longitud de un nombre de variable está limitada a 12 caracteres. Se autorizan todos los nombres, salvo ciertas palabras clave reservadas al lenguaje (File, Until, o Commit forman parte de estas palabras clave). Cuando se teclea un nombre de variable en letras minúsculas, se transforma automáticamente en letras mayúsculas, salvo que se trate de una palabra clave.

Se pueden dimensionar ciertas variables, es decir que corresponden a las tablas de elementos (se admiten de 1 a 4 dimensiones). En ese caso se expresan el/los índices en forma de expresiones numéricas, separados por comas si hay varias, entre paréntesis (por ejemplo, M_TB(1,2,8) es una expresión válida).

Una clase corresponde a un conjunto de variables ligadas a un contexto. Las clases más comunes son las siguientes:

*    [V]: clase de variables globales. Una variable de este tipo está ligada a la sesión ADONIX. Una vez creada, permanece accesible mientras que no se destruya o mientras que la sesión ADONIX no se acabe. Su declaración se realiza con la ayuda de instrucciones dedicadas (según el tipo, se utilizan las instrucciones Integer, Decimal, Char, Date, Libelle, Shortint, Float, Double).

*    [L]: clase de variables locales. Es asociada a una imbricación o anidamiento de subprograma (las instrucciones Call crean un nuevo tipo de variables locales que ocultan el tipo anterior). La declaración de este tipo de variables se realiza de igual forma que las variables precedentes, pero precedida de la palabra clave Local.

*    [C]: clase de variables de tipo contador. Se trata de variables comunes a todos los puestos de un dossier. Su creación se realiza mediante una función de desarrollo dedicada.

*    [F:abv] o [abv]: se trata de la clase de variables ligadas a una tabla declarada por la instrucción File. Aquí se encuentran los valores de registro actuales.

*    [M:abv] o [abv]: se trata de la clase de variables ligadas a una pantalla de modificación declarada por la instrucción Mask. Se encuentran los valores introducidos y que pueden mostrarse (cada pestaña de una pantalla se considera como una máscara).

La clase no es obligatoria, sin embargo hay reglas que permiten conocer la clase por defecto.

Existe un conjunto de variables denominadas sistema gestionadas por adonix. Mientras que las otras variables se transforman durante la introducción en mayúsculas, aquellas variables que forman parte de las palabras clave del lenguaje se marcan en minúsculas. He aquí algunas variables del sistema que se utilizan (lista no exhaustiva):

Nombre

Tipo

Definición

nomap

serie

nombre del dossier actual

datesyst

fecha

fecha del sistema modificable

adxdir

serie

repertorio de la base adonix

nolign

numérico

número de línea actual

fstat

numérico

norma de regreso tras la lectura o escritura de la tabla

Funciones definidas en el motor

Una función se expresa mediante la forma (lista de argumentos). Existen numerosas funciones: tratamiento de series de caracteres, cálculos de fechas, funciones numéricas clásicas, funciones de truncamiento y redondeo, funciones estadísticas, etc.

A continuación se encuentra una lista de las principales funciones que se utilizan en ADONIX. En la tabla de funciones las normas de escritura son las siguientes:

*v es un argumento de cualquier tipo (igual que v1,v2,v3…)

*c es un argumento de tipo serie de caracteres

*x es un argumento de tipo numérico

*n , p, q... son argumentos de tipo entero

*    V es una variable

*    lista es una lista de variables o expresiones. En ese tipo de lista, una variable TABLO de tipo tabla, puede utilizarse de la forma TABLO(I) (solamente se toma un índice), TABLO ( se toman todos los índices), o TABLO(I J) (se toman los índices de I a J ambos incluidos).

Sintaxis

Tipo

Definición

date$

fecha

fecha actual

sin(x), cos(x), tan(x)

numérico

funciones trigonométricas

asin(x),acos(x)...

numérico

funciones trigonométricas inversas

log(x),exp(x),ln(x)

numérico

funciones logarítmicas

abs(x), sgn(x)

numérico

valor absoluto, signo

ar2(x), arr(x,y)

numérico

redondea a 2 decimales, redondeo de x a y cerca

int(x), mod(x,y)

numérico

parte entera, módulo

len(c)

numérico

longitud de una cadena

day(d),month(d),year(d)

numérico

extracción día, mes, año de una fecha

dayn(d),week(d)

numérico

número de día en la semana, número de la semana

num$(x)

serie

un número convertido en una cadena (representación decimal)

space$(n), chr$(n)

serie

cadena compuesta de n espacios, de 1 carácter de código interno n

string$(n,c), string$(n,x)

serie

serie compuesta de n caracteres c

(o n caracteres de código x)

day$(d), month$(d)

serie

nombre del día, nombre del mes

addmonth(d,n)

fecha

la fecha d a la cual se añaden n meses

eomonth(d)

fecha

el último día del mes correspondiente a la fecha d

left$(c,n), right$(c,n)

serie

parte izquierda/derecha de una serie de n caracteres

mid$(c,n,p), seg$(c,n,p)

serie

extracción de subseries de una determinada serie

gdat$(n,p,q)

fecha

esquema de una fecha (n=día,p=mes,q=año)

pat(c1,c2)

numérico

verifica la conformidad de una serie c1 a un modelo c2 (1 si es conforme, 0 si no lo es). El modelo puede incluir los meta-caracteres * (¿cualquier número de cualquier caracter), ? (un caracter cualquiera), # (una cifra cualquiera).

min(lista), max(lista)

todos los tipos

mínimo o máximo de un conjunto de variables o valores

sum(lista), prd(lista)

numérico

suma, producto de un conjunto de variables o valores

avg(lista), var(lista)

numérico

media, variación de un conjunto de variables o valores

sum(lista)

serie

concatenación de un conjunto de variables o valores de series

uni(lista)

numérico

verificación sobre la unicidad de un conjunto de variables o valores

find(v,lista)

numérico

búsqueda de un valor de cualquier tipo en una lista

evalue(c)

todos los tipos

evaluación de una serie de caracteres que contiene una expresión

format$(c,v)

serie

formatear un valor con un formato determinado c.

toupper(c),tolower(c)

serie

transformación en minúsculas, en mayúsculas

sigma(V=v1,v2,v3)

numérico

suma (V que varía de v1 a v2), de la expresión v3 función de V.

Funciones definidas por los creadores

Existen funciones definidas por lo creadores en desarrollo que se pueden utilizar en las expresiones calculadas mediante la expresión siguiente:

func TRAIT.FONCT (lista de argumentos)

TRAIT es el nombre del tratamient, y FONCT el nombre de la función afectada. Las funciones están documentadas en la table de los sub-programas.